:not(:root):fullscreen {
    position: fixed !important;
    inset: 0 !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    min-width: 0 !important;
    max-width: none !important;
    min-height: 0 !important;
    max-height: none !important;
    width: 100% !important;
    height: 100% !important;
    transform: none !important;

    /* intentionally not !important */
    object-fit: contain;
    user-select: text;
}

:fullscreen {
    overlay: auto !important;
}

iframe:fullscreen {
    border: none !important;
    padding: 0 !important;
}

/* TODO(foolip): In the spec, there's a ::backdrop block with the properties
   shared with dialog::backdrop (see html.css). */
:not(:root):fullscreen::backdrop {
    position: fixed;
    inset: 0;
    background: black;
    overlay: auto !important;
}

/* Anything below are extensions over what the Fullscreen API (29 May 2018) mandates. */

/* This prevents video from overflowing the viewport in
   virtual/android/fullscreen/video-scrolled-iframe.html (crbug.com/441890) and
   removes scrollbars caused by html { overflow: scroll } (crbug.com/543946).
   TODO(foolip): This is done differently in Gecko, find a fix not involving the
   ancestor selector in https://github.com/whatwg/fullscreen/issues/19. */
:root:-webkit-full-screen-ancestor {
    overflow: hidden !important;
}

:fullscreen:-internal-video-persistent-ancestor :not(:-internal-video-persistent-ancestor) {
  display: none !important;
}

:-internal-video-persistent {
  position: fixed !important;
  left: 0 !important;
  top: 0 !important;
  margin: 0 !important;
  min-width: 0 !important;
  max-width: none !important;
  min-height: 0 !important;
  max-height: none !important;
  width: 100% !important;
  height: 100% !important;
  transform: none !important;

  background-color: black !important;
  z-index: 2147483647 !important;
}
